/**
 * zc Inc. Copyright (c) 2022 All Rights Reserved.
 */
package com.company.exception;

import com.company.exception.base.AbstractBaseException;
import com.company.exception.base.IResultCode;

import com.company.exception.base.SystemException;



/**
 * 业务异常类
 *
 * @author poc
 * @version : DemoException.java, v 0.1 2023年12月15日 16:11:896 poc Exp $
 */

public class DemoException extends AbstractBaseException {

    /**
     * 业务异常默认不可重试
     */
    private static final boolean CAN_RETRY = false;

    /**
     * Instantiates a new DemoException.
     *
     * @param code 错误码
     */
    public DemoException(String code) {
        super(code, CAN_RETRY);
    }

    /**
     * Instantiates a new DemoException.
     *
     * @param code 错误码
     */
    public DemoException(IResultCode code) {
        super(code.getCode(), CAN_RETRY);
    }

    /**
     * Instantiates a new DemoException.
     *
     * @param code     错误码
     * @param canRetry 自定义是否重试
     */
    public DemoException(IResultCode code, Boolean canRetry) {
        super(code.getCode(), canRetry);
    }

    /**
     * Instantiates a new DemoException.
     *
     * @param code     错误码
     * @param canRetry 自定义是否重试
     */
    public DemoException(String code, Boolean canRetry) {
        super(code, canRetry);
    }

    /**
     * 构造函数
     *
     * @param code        错误码
     * @param placeHolder 错误码占位符,例如{0}业务异常,按顺序传入的参数
     */
    public DemoException(IResultCode code, Object... placeHolder) {
        super(code.getCode(), CAN_RETRY, placeHolder);
    }

    /**
     * 构造函数
     *
     * @param code        错误码
     * @param placeHolder 错误码占位符,例如{0}业务异常,按顺序传入的参数
     */
    public DemoException(String code, Object... placeHolder) {
        super(code, CAN_RETRY, placeHolder);
    }

    /**
     * 构造函数
     *
     * @param code        错误码
     * @param canRetry    自定义是否重试
     * @param placeHolder 错误码占位符,例如{0}业务异常,按顺序传入的参数
     */
    public DemoException(IResultCode code, Boolean canRetry, Object... placeHolder) {
        super(code.getCode(), canRetry, placeHolder);
    }

    /**
     * 构造函数
     *
     * @param code        错误码
     * @param canRetry    自定义是否重试
     * @param placeHolder 错误码占位符,例如{0}业务异常,按顺序传入的参数
     */
    public DemoException(String code, Boolean canRetry, Object... placeHolder) {
        super(code, canRetry, placeHolder);
    }

    /**
     * 构造函数
     *
     * @param cause       throwable
     * @param placeHolder 错误码占位符,例如{0}业务异常,按顺序传入的参数
     */
    public DemoException(IResultCode code, Throwable cause, Object... placeHolder) {
        super(code.getCode(), CAN_RETRY, cause, placeHolder);
    }

    /**
     * 构造函数
     *
     * @param code        错误码
     * @param cause       throwable
     * @param placeHolder 错误码占位符,例如{0}业务异常,按顺序传入的参数
     */
    public DemoException(String code, Throwable cause, Object... placeHolder) {
        super(code, CAN_RETRY, cause, placeHolder);
    }

    /**
     * 构造函数
     *
     * @param cause       throwable
     * @param canRetry    自定义是否重试
     * @param placeHolder 错误码占位符,例如{0}业务异常,按顺序传入的参数
     */
    public DemoException(IResultCode code, Boolean canRetry, Throwable cause, Object... placeHolder) {
        super(code.getCode(), canRetry, cause, placeHolder);
    }


    /**
     * 构造函数
     *
     * @param code        错误码
     * @param canRetry    自定义是否重试
     * @param cause       throwable
     * @param placeHolder 错误码占位符,例如{0}业务异常,按顺序传入的参数
     */
    public DemoException(String code, Boolean canRetry, Throwable cause, Object... placeHolder) {
        super(code, canRetry, cause, placeHolder);
    }
}